The rise of cloud computing in recent years has transformed the way computing applications are created and executed. Most cloud computing providers employ an Infrastructure-as-a-Service (IaaS) model in which customers outsource their computing and software capabilities to third party infrastructures and pay for the service usage on demand, which allows customers to establish and rapidly expand a global presence in minutes rather than days or months. By offering virtually unlimited resources without any upfront capital investment and a simple pay-as-you-go charging model, cloud computing provides a compelling alternative to the construction, hosting, and maintenance of private computing infrastructures.
Despite the tremendous momentum of cloud computing, many companies are still reluctant to move their services or enterprise applications to the cloud, due to reliability, performance, security, and privacy concerns. To maximize economic benefits and resource utilization, cloud networks typically simultaneously initiate multiple virtual machines (VMs) to execute on one physical server computing device. Further, most cloud providers only use host based virtualization technologies to realize separation and performance isolation between VMs on the end-host level. Then, in the network that interconnects each host, the same set of physical routers and links are deployed to carry traffic for all tenants indistinguishably. Further, the cloud providers do not offer guaranteed network resources to tenants, and thus the bandwidth between VMs of the same tenant can vary significantly over time, depending on the network load and usage from other tenants.
Moreover, while cloud computing data centers provide many mechanisms to schedule local compute, memory, and disk resources, existing mechanisms for apportioning network resources fall short. Unfortunately, today's public cloud platforms—such as Amazon's Elastic Compute Cloud (EC2), Google's Google App Engine, Microsoft's Azure Service Platform, Rackspace's Mosso, and GoGrid's cloud hosting platform—do not provide any network performance guarantees, which in turn affects application reliability and tenant cost. Specifically, the resource reservation model in today's clouds only provisions processor (e.g., Central Processing Unit (CPU)) and memory resources but ignores networking completely. Because of the largely oversubscribed nature of today's datacenter networks, network bandwidth is a scarce resource shared across many tenants. When network-intensive phases of multiple applications simultaneously occur and compete for these scarce network resources, their running times become unpredictable. This uncertainty in execution time further translates into unpredictable cost as tenants need to pay for reserved VMs for the entire duration of their jobs. Accordingly, there exists a need for systems and mechanisms to provide network bandwidth allocation and guarantees in multi-tenant cloud networks.